예제 #1
0
        public void ResolveStructFields()
        {
            foreach (var binding in this.structWorkData)
            {
                session.PushContext(
                    "in struct '" + binding.name.GetString() + "'",
                    binding.declNode.GetSpan());

                var struc = session.GetStruct(binding.declIndex);

                foreach (var fieldNode in binding.declNode.fields)
                {
                    var fieldName = NameResolver.Resolve(fieldNode.name);
                    var fieldType = TypeResolver.Resolve(session, fieldNode.type, binding.useDirectives, true);

                    int duplicateFieldIndex;
                    if (struc.fieldNames.FindByName(fieldName, out duplicateFieldIndex))
                    {
                        session.AddMessage(
                            Diagnostics.MessageKind.Error,
                            Diagnostics.MessageCode.DuplicateDeclaration,
                            "duplicate field '" + fieldName.GetString() + "'",
                            fieldNode.name.GetSpan(),
                            struc.GetFieldNameSpan(duplicateFieldIndex));
                    }
                    else
                    {
                        struc.AddField(fieldName, fieldType, fieldNode);
                    }
                }

                session.PopContext();
            }
        }
예제 #2
0
        public void TestEmptyName()
        {
            var config = ConfigParams.FromTuples();
            var name   = NameResolver.Resolve(config);

            Assert.Null(name);
        }
예제 #3
0
        public void ResolveFunctHeaders()
        {
            foreach (var binding in this.functWorkData)
            {
                session.PushContext(
                    "in funct '" + binding.name.GetString() + "'",
                    binding.declNode.GetSpan());

                var funct = session.GetFunct(binding.declIndex);

                funct.CreateRegister(
                    TypeResolver.Resolve(session, binding.declNode.returnType, binding.useDirectives, true),
                    true);

                foreach (var paramNode in binding.declNode.parameters)
                {
                    var paramName = NameResolver.Resolve(paramNode.name);
                    var paramType = TypeResolver.Resolve(session, paramNode.type, binding.useDirectives, true);
                    var paramReg  = funct.CreateRegister(paramType, false);
                    funct.CreateBinding(paramName, paramReg, paramNode.name.GetSpan());
                }

                funct.SetParameterNumber(binding.declNode.parameters.Count);

                session.PopContext();
            }
        }
예제 #4
0
        /// <summary>
        /// Configures component by passing configuration parameters.
        /// </summary>
        /// <param name="config">configuration parameters to be set.</param>
        public virtual void Configure(ConfigParams config)
        {
            _logger.Configure(config);
            _connectionResolver.Configure(config, true);
            _credentialResolver.Configure(config, true);

            Name = NameResolver.Resolve(config, Name);
            Name = config.GetAsStringWithDefault("queue", Name);
        }
예제 #5
0
        public void TestNormalNameResolution()
        {
            var config = ConfigParams.FromTuples("Id", "ABC");
            var name   = NameResolver.Resolve(config);

            Assert.Equal("ABC", name);

            config = ConfigParams.FromTuples("NAME", "ABC");
            name   = NameResolver.Resolve(config);
            Assert.Equal("ABC", name);
        }
예제 #6
0
파일: Var.cs 프로젝트: korolkiewiczk/Lua2Cs
 public Var(string name)
 {
     NameResolver.Resolve(ref name);
     _name = name;
 }
예제 #7
0
 /// <summary>
 /// Configures component by passing configuration parameters.
 /// </summary>
 /// <param name="config">configuration parameters to be set.</param>
 public virtual void Configure(ConfigParams config)
 {
     Name = NameResolver.Resolve(config, Name);
     _connectionResolver.Configure(config, true);
     _credentialResolver.Configure(config, true);
 }
예제 #8
0
        protected virtual void UpdateMorph()
        {
            var text = Morph == null ? "(none)" : NameResolver.Resolve(Morph.Name);

            Label.Text = new TranslatableText(text);
        }