microsoft/qdk

Public

mirrored fromhttps://github.com/microsoft/qdkAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
cesarzc/ssa-panic

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

compiler/qsc_data_structures/src/language_features.rs

42lines · modecode

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4use bitflags::bitflags;
5use serde::Deserialize;
6
7#[derive(Deserialize, Clone, Debug, PartialOrd, Ord, PartialEq, Eq, Copy)]
8pub struct LanguageFeatures(u8);
9
10bitflags! {
11 impl LanguageFeatures: u8 {
12 const V2PreviewSyntax = 0b1;
13 const PreviewQirGen = 0b10;
14 }
15}
16
17impl LanguageFeatures {
18 pub fn merge(&mut self, other: impl Into<LanguageFeatures>) {
19 self.0 |= other.into().0;
20 }
21}
22
23impl Default for LanguageFeatures {
24 fn default() -> Self {
25 LanguageFeatures::empty()
26 }
27}
28
29impl<I> FromIterator<I> for LanguageFeatures
30where
31 I: AsRef<str>,
32{
33 fn from_iter<T: IntoIterator<Item = I>>(iter: T) -> Self {
34 iter.into_iter().fold(LanguageFeatures::empty(), |acc, x| {
35 acc | match x.as_ref() {
36 "v2-preview-syntax" => LanguageFeatures::V2PreviewSyntax,
37 "preview-qir-gen" => LanguageFeatures::PreviewQirGen,
38 _ => LanguageFeatures::empty(),
39 }
40 })
41 }
42}
43